﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Una.FirmaDigital.EN;

namespace Una.FirmaDigital.UI.Firma.Formularios
{
    public partial class VerificarPdf : Form
    {
        string ArchivoOrigen { get; set; }
        string ArchivoCert { get; set; }
        LN.Dominio.Especificaciones.Firma lnfirma = new LN.Dominio.Especificaciones.Firma();

        public VerificarPdf()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string tempPath = "";
            file_sleccionarpdf.Filter = "Pdf files (*.Pdf)|*.Pdf"; //this should be before
            if (file_sleccionarpdf.ShowDialog() == DialogResult.OK)
            {
                tempPath = file_sleccionarpdf.FileName; // prints path
                txtfilesrc.Text = tempPath;
                ArchivoOrigen = tempPath;
            }
        }

        private void btnvalidar_Click(object sender, EventArgs e)
        {
            if (camposCorrectos())
            {
                flowLayoutPanel1.Controls.Clear();
                string mensaje = "";
                
                List<Respuesta> respuesta = 
                    check_cert.Checked?
                    lnfirma.VerificarPdfContraLlavePublica(ArchivoOrigen,ArchivoCert,ref mensaje):
                    lnfirma.VerificarPdf(ArchivoOrigen, ref mensaje);

                StringBuilder sb = new StringBuilder();
                if (respuesta != null)
                {
                    foreach (Respuesta r in respuesta)
                    {
                        sb.Append(r.Mensaje + Environment.NewLine);
                        var lae = new Label();
                        lae.Font = new Font(FontFamily.GenericSansSerif, 18);
                        switch (r.CodigoEstado)
                        {
                            case 1:
                                Console.WriteLine("entre 1");
                                lae.ForeColor = Color.Green;
                                break;
                            case 2:
                                Console.WriteLine("entre 2");

                                lae.ForeColor = Color.Brown;
                                break;
                            case 3:
                                Console.WriteLine("entre 3");
                                lae.ForeColor = Color.Red;
                                break;
                            case 4:
                                Console.WriteLine("entre 4");
                                lae.ForeColor = Color.Blue;
                                break;

                        }
                        

                        lae.Text = r.Mensaje;
                        lae.Width = flowLayoutPanel1.Width;
                        flowLayoutPanel1.Controls.Add(lae);


                    }
               
                }
                stlblultimaoperacion.Text = mensaje;

            }
            else
            {
                MessageBox.Show("Debes seleccionar un archivo");
            }

        }
        private bool camposCorrectos()
        {
            if (!File.Exists(ArchivoOrigen))
            {
                MessageBox.Show("No es válido la ruta origen");
                return false;
            }

            if (check_cert.Checked)
            {
                if (!File.Exists(ArchivoCert))
                {
                    MessageBox.Show("El archivo llave no es valido");
                    return false;
                }
            }

            //  flowLayoutPanel1.Controls.Add(new Label(

            return true;
        }

        private void check_cert_CheckedChanged(object sender, EventArgs e)
        {

            btnseleccionarcer.Enabled = check_cert.Checked ;
            
        }

        private void btnseleccionarcer_Click(object sender, EventArgs e)
        {
            string tempPath = "";
            file_sleccionarpdf.Filter = "Archivos Cert (*.cer)|*.Cer"; //this should be before
            if (file_sleccionarpdf.ShowDialog() == DialogResult.OK)
            {
                tempPath = file_sleccionarpdf.FileName; // prints path
                txtcerurl.Text = tempPath;
                ArchivoCert = tempPath;
            }
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void limpiarCamposToolStripMenuItem_Click(object sender, EventArgs e)
        {
            stlblultimaoperacion.Text = "";
            txtcerurl.Text = "";
            txtfilesrc.Text = "";
            ArchivoCert = "";
            ArchivoOrigen = "";
            check_cert.Checked = false;
            btnseleccionarcer.Enabled = false;
            flowLayoutPanel1.Controls.Clear();
        }

    }
}
